/**
 * FileContentManager is a Java based file manager desktop application, it can
 * show, edit and manipulate the content of the files archived inside a zip.
 * 
 * Copyright (C) 2007
 * 
 * Created by Camila Sanchez [http://mimix.wordpress.com/], Rafael Naufal
 * [http://rnaufal.livejournal.com] and Rodrigo [rdomartins@gmail.com]
 * 
 * FileContentManager is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by the
 * Free Software Foundation; either version 2.1 of the License, or (at your
 * option) any later version.
 * 
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with FileContentManager; if not, write to the Free Software Foundation,
 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */
package br.com.jteam.jfcm.gui.tree;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JTree;
import javax.swing.tree.DefaultTreeModel;

/**
 * 
 * Uma &aacute;rvore capaz de exibir elementos do tipo ZipData.
 * 
 * <p>
 * Responde a eventos de "duplo-click" no nome do arquivo.
 * </p>
 * 
 * @see ZipData
 */
public class ZipTree extends JTree
{
	public ZipTree(ZipData root)
	{
		ZipDataNode node = new ZipDataNode(root);
		setModel(new DefaultTreeModel(node));
		setCellRenderer(new ZipDataRenderer());
		setShowsRootHandles(false);
		addMouseListener(new MouseAdapter()
		{
			@Override
			public void mouseClicked(MouseEvent e)
			{
				if (e.getClickCount() == 2)
				{
					ZipDataNode node =
									(ZipDataNode) getLastSelectedPathComponent();
					if (node == null)
						return;
					ZipData zipData = node.getUserObject();
					if (!zipData.isFolder())
					{
						zipData.select();
					}
				}
			}
		});
	}
}
